#ifndef _COMMANDS_
#define _COMMANDS_

#include "client.h"
#include "protocol.h"

/* 解析后的命令结构 */
typedef struct
{
    CommandType_e cmd_type;  // 命令枚举值
    char args[MAX_BUF_SIZE]; // 参数部分
    int has_args;            // 是否有参数标志
} ParsedCommand;

// 命令解析函数
int parse_input(const char *input, ParsedCommand *out);

// LS命令响应处理函数
int handle_ls_response(ClientContext *ctx, const protocol_header_t *header, 
    const char *data);
// 判断解析出的字符串是目录信息还是项名
int getTypeDirInfo(const char *input);
// 解析单项--输出
int parseDirInfo(char *dir_info);
// 解析命令--单项
int parseLsResp(const char *input, int input_length);

// CD命令响应处理函数
int handle_cd_response(ClientContext *ctx, const protocol_header_t *header, 
    const char *data);

// PWD命令响应处理函数
int handle_pwd_response(ClientContext *ctx, const protocol_header_t *header, 
    const char *data);

#endif // COMMANDS

// int handle_rmove_response(ClientContext *ctx, const protocol_header_t *header, 
// const char *data);
// int handle_mkdir_response(ClientContext *ctx, const protocol_header_t *header, 
// const char *data);
// int handle_rmdir_response(ClientContext *ctx, const protocol_header_t *header, 
// const char *data);
// int handle_gets_response(ClientContext *ctx, const protocol_header_t *header, 
// const char *data);
// int handle_puts_response(ClientContext *ctx, const protocol_header_t *header, 
// const char *data);